<script>
    // 解构：解析结构
    // 数组解构赋值的目的：获取数组中的值
    // 解构赋值就是一个赋值运算
    // =右边是数据
    // =左边是和右边数据保持一样格式的模式 ，模式内是变量
    // 除了值，其他部分都是模式

    // 之前获取数据
    // let arr=[11,22,33,44,55]
    // let a=arr[0]
    // let c=arr[1]
    // let d=arr[2]
    // let e=arr[3]
    // let f=arr[4]
    // console.log(a,c,d,e,f);//11 22 33 44 55



    // // 数组解构赋值获取数据
    // // 解析arr的结构，把对应的值赋值给对应的变量，（对应：按照位置顺序对应）
    // let arr=[11,22,33,44,55]
    // let [a,b,c,d,e]=arr
    // console.log(a,b,c,d,e);//11 22 33 44 55




    // // 1、完全解构（解构成功） 变量和值的数量一样，并且位置一一对应
    // // let [变量1,变量2,,,,变量n]=[值1,值2,,,,值n]
    // let arr = [11, 22, 33, 44, 55, 66]
    // let [a, b, c, d, e, f] = arr  
    // console.log(a,b,c,d,e,f);



    // // 2、不完全解构（解构成功） 变量比值的数量少

    // let arr=[11,22,33,44,55,66]
    // let [a,b,c]=arr
    // console.log(a,b,c);//11 22 33



    // // 3、缺省值 （缺了一个值）
    // let arr = [11, 22, 33, 44, 55, 66]
    // // let [a, b, c, , ,] = arr  // 不要的数据，也要把位置预留出来（空的位置就是缺省值） 如果缺省值是最后几个值，则位置可以不留
    // // console.log(a, b, c);//11 22 33


    // let [a, , , b, , c] = arr  // 如果缺省值是中间的值，则必须预留位置
    // console.log(a,b,c);//11 44 66




    // // 4、解构失败  有的变量没有得到值，得到的是undefined（通常是变量比数据多的时候）
    // let arr = [11, 22, 33, 44, 55, 66]

    // // let [a,b,c,d,e,f,g]=arr
    // // console.log(a,b,c,d,e,f,g);//11 22 33 44 55 66 undefined    g解构失败

    // let [a, b, , , e, f, g] = arr  // 此时g也解构失败
    // console.log(a, b, e, f, g); //11 22 55 66 undefined

    // console.log(a+b+e+f+g); // NaN





    // 5、默认值  我们会根据具体情况，给某个变量一个默认值：加减运算默认值为0  乘除运算默认值为1

    let arr = [undefined,11, 22, 33, 44, 55, 66]
    let [z=777,a, b, c, d, e, f, g=0] = arr  // z也属于解构失败，只要是undefined就是解构失败
    console.log(a + b + c + d + e + f + g);
    console.log(z);//777  















</script>